In [37]:
import os
import re

from lxml import etree
from path_helpers import path
import svg_model

Set path to device SVG file


In [38]:
# device_path = path(r'<path to>\device.svg')

Open device directory in file manager


In [2]:
os.startfile(device_path.parent)

Assign data-channels attr of electrodes svg:path based on electrode index


In [39]:
cre_index = re.compile(r'electrode(?P<index>\d+)')
xml_root = etree.parse(device_path)

electrode_xpath = '//svg:g[@inkscape:label="Device"]/svg:path[starts-with(@id, "electrode")]'

# Assign `data-channels` attribute of each electrode `svg:path` based on electrode index.
for electrode_i in xml_root.xpath(electrode_xpath, namespaces=svg_model.INKSCAPE_NSMAP):
    match = cre_index.match(electrode_i.attrib['id'])
    electrode_i.attrib['data-channels'] = str(int(match.group('index')))

# Rename original file to `<original name>.original.svg`
device_path.rename('%s.original.svg' % device_path.namebase)

# Write result to original path.
with device_path.open('wb') as output:
    output.write(etree.tounicode(xml_root))